#ifndef VERTEX_HPP
#define VERTEX_HPP

#include <vector>

class Vertex {

public:
    enum State {
        UNSEEN,
        SEEN,
        DONE
    };

    Vertex();
    Vertex(int id);
    int getId();
    State getState();
    void setState(State state);
    bool operator()(const Vertex * first, const Vertex * second);
    void addNeighbour(Vertex * vertex);
    std::vector<Vertex*> * getNeighbours();

private:
    int id;
    int distance;
    State state;
    std::vector<Vertex*> * neighbours;

};

#endif // VERTEX_HPP
